package com.omuao.message.queue.manager;

import com.omuao.message.queue.core.queue.DelayQueue;

/**
 * 延迟队列管理器
 *
 * @author omuao
 */
public interface DelayQueueManager extends DelayQueue {

    /**
     * 根据key 删除队列数据
     *
     * @param id 主键
     * @return 受影响条数
     */
    int delete(String id);

    /**
     * 根据key 查询队列数据
     *
     * @param id 主键
     * @return 消息
     */
    String query(String id);

    /**
     * 根据key 插入队列数据
     *
     * @param id        主键
     * @param message   消息
     * @param timestamp 时间戳
     * @return 受影响条数
     */
    int insert(String id, String message, Long timestamp);

    /**
     * 根据key 更新队列数据
     *
     * @param id        主键
     * @param message   消息
     * @param timestamp 时间戳
     * @return 受影响条数
     */
    int update(String id, String message, Long timestamp);

    /**
     * 清除超时消息
     */
    void clearTimeoutMessage();

    /**
     * 整理
     */
    void compactRange();
}
